package org.common.utils.result;

/**
 * 结果对象
 * @author zhouzhibing
 * @date 2025/7/1
 */
public class Result<T> {

    /**
     * 错误代码
     */
    private final ResultError error;

    /**
     * 结果内容
     */
    private final T result;

    private Result(ResultError resultError, T result) {
        this.error = resultError;
        this.result = result;
    }

    /**
     * 创建错误结果
     * @param error 错误
     * @return 结果对象
     * @param <T> 结果内容类型
     */
    public static <T> Result<T> ofError(ResultError error) {
        return new Result<T>(error, null);
    }

    /**
     * 创建结果对象
     * @param result 结果内容
     * @return 结果对象
     * @param <T> 结果内容类型
     */
    public static <T> Result<T> ofResult(T result) {
        return new Result<T>(null , result);
    }

    /**
     * 判断结果是否成功
     * @return 是否成功
     */
    public boolean success() {
        return this.error == null;
    }

    /**
     * 获取错误代码
     * @return 错误代码
     */
    public ResultError getError() {
        return error;
    }

    /**
     * 获取结果内容
     * @return 结果内容
     */
    public T getResult() {
        return result;
    }
}

